<?php
/**
 * 
 * @author HelloWorld
 * 2014-9-29
 * UTF-8
 */
class Lib_Redis_List extends Lib_Redis_Base {
	function __construct() {
	}

	/**
	 * 从队列的左边入队一个或多个元素
	 *
	 * @param unknown_type $key
	 * @param array $value
	 */
	public static function lPush($key, $value) {
		self::_init ();
		return self::$_redis->LPUSH ( self::$prefix.$key, $value );
	}

	/**
	 * 从队列的右边入队一个元素
	 *
	 * @param unknown_type $key
	 * @param unknown_type $value
	 */
	public static function rPush($key, $value) {
		self::_init ();
		return self::$_redis->RPUSH ( self::$prefix.$key, $value );
	}

	/**
	 * 当队列存在时，从队到左边入队一个元素
	 *
	 * @param unknown_type $key
	 * @param unknown_type $value
	 */
	public static function lPushX($key, $value) {
		self::_init ();
		return self::$_redis->LPUSHX ( self::$prefix.$key, $value );
	}

	/**
	 * 从队列的右边入队一个元素，仅队列存在时有效
	 *
	 * @param unknown_type $key
	 * @param unknown_type $value
	 */
	public static function rPushX($key, $value) {
		self::_init ();
		return self::$_redis->RPUSHX ( self::$prefix.$key, $value );
	}

	/**
	 * 从队列的左边出队一个元素
	 *
	 * @param unknown_type $key
	 */
	public static function lPop($key) {
		self::_init ();
		return self::$_redis->LPOP ( self::$prefix.$key );
	}

	/**
	 * 从队列的右边出队一个元素
	 *
	 * @param unknown_type $key
	 */
	public static function rPop($key) {
		self::_init ();
		return self::$_redis->RPOP ( self::$prefix.$key );
	}

	/**
	 * 获得队列(List)的长度
	 *
	 * @param unknown_type $key
	 */
	public static function lLen($key) {
		self::_init ();
		return self::$_redis->LLen ( self::$prefix.$key );
	}

	/**
	 * 获取一个元素，通过其索引列表
	 *
	 * @param unknown_type $key
	 * @param int $index
	 */
	public static function lIndex($key, $index) {
		self::_init ();
		return self::$_redis->LINDEX ( self::$prefix.$key, $index );
	}

	/**
	 * 从列表中获取指定返回的元素
	 *
	 * @param unknown_type $key
	 * @param int $start
	 * @param int $end
	 */
	public static function lRange($key, $start, $end) {
		self::_init ();
		return self::$_redis->LRANGE ( self::$prefix.$key, $start, $end );
	}

	/**
	 * 裁剪队列
	 * @param unknown $key
	 * @param unknown $start
	 * @param unknown $end
	 */
	public static function lTrim($key,$start,$end){
		self::_init();
		return self::$_redis->ltrim(self::$prefix.$key,$start,$end);
	}

    /**
     * 替换队列index元素
     *
     * @param unknown_type $key
     * @param unknown_type $index
     * @param unknown_type $value
     */
    public static function lSet($key, $index, $value) {
        self::_init ();
        return self::$_redis->LSET ( self::$prefix.$key, $index, $value );
    }
	
	/**
	 * 删除一个KEY
	 * @param unknown $key
	 * @return number
	 */
	public static function delKey($key){
	    self::_init();
	    return self::$_redis->del(self::$prefix.$key);
	}

}